package com.designpattern.singleton;

/**
 * 懒汉式，内部类方式。jvm保证了类加载，初始化时静态变量赋值操作是线程安全的。由于使用了内部类，可实现懒加载。
 * @author David
 *
 */
public class Singleton4 {
	
	private Singleton4(){
		
	}
	
	public static Singleton4 getInstance(){
		return SingletonHolder.singleton;
	}
	
	/**
	 * 使用内部类。
	 * @author David
	 *
	 */
	public static class SingletonHolder{
		// 类加载时，静态方法初始化时，jvm保证线程安全。(静态块或者静态变量的初始化赋值操作)
		private static Singleton4 singleton = new Singleton4(); 
	}
	
	public void print(){
		System.out.println("singleton4 is running.");
	}
}
